An electronic system design may incorporate any number of configurable or programmable logic devices, such as programmable logic devices (PLDs) or field programmable gate arrays (FPGAs). PLDs and FPGAs can be used to implement any logical function, for example, that an ASIC could perform. Additionally, PLDs and FPGAs are reconfigurable so as to allow updating of various programmable functions as needed. For example, FPGA's contain programmable logic elements and configurable and reconfigurable interconnects that allow the logic elements to be arranged together into different configurations to perform various functions. The logic elements generally also include memory elements, which may be simple flip-flops or more complete blocks of memory.
An electronic system design may also incorporate software. As these systems grow in complexity and size, one bottleneck in the design process may be debugging of the system software. Accordingly, it would be beneficial to provide improved methods and apparatus for debugging software for implementation in hardware systems.